package org.mfoyou.agent.common.inf;

import java.util.List;
import java.util.Map;

import org.mfoyou.agent.common.dao.domain.HuawuServiceCoupon;
import org.mfoyou.agent.common.dao.domain.HuawuServiceCouponRule;
import org.mfoyou.agent.common.dao.domain.HuawuServiceUserCoupon;
import org.mfoyou.agent.utils.common.ArrayListObject;

/**
 * 优惠券相关接口
 *
 * @author hzhang7
 */
public interface IOther {

	/**
	 * 添加优惠券
	 * @param huawuServiceCoupon
	 * @return
	 */
	int addServiceCoupon(HuawuServiceCoupon huawuServiceCoupon);

	/**
	 * 修改优惠券
	 *
	 * @param huawuServiceCoupon
	 * @param huawuServiceCouponEx
	 * @return
	 */
	int modifyCoupon(HuawuServiceCoupon huawuServiceCoupon, HuawuServiceCoupon huawuServiceCouponEx);

	/**
	 * 分页获取优惠券列表
	 *
	 * @param agentId
	 * @param pageId
	 * @param pageSize
	 * @param couponId
	 * @param state
	 * @return
	 */
	ArrayListObject<?> getCouponList(Integer agentId, Integer pageId, Integer pageSize, Integer couponId, Integer state);

	/**
	 * 通过用户id获取代理商优惠券列表
	 *
	 * @param agentId
	 * @param userId
	 * @return
	 */
	List<HuawuServiceCoupon> getAgentCouponListByUser(Integer agentId, Integer userId);

	/**
	 * 领取优惠券
	 *
	 * @param couponIds
	 * @param userid
	 * @return
	 */
	List<Integer> takeCoupons(Integer[] couponIds, Integer userid);

	/**
	 * 获取用户优惠券列表
	 *
	 * @param userId
	 * @param state
	 * @param type
	 * @return
	 */
	List<Map<String, Object>> getUserCouponList(Integer userId, Integer state, Integer type);

	/**
	 * 通过优惠券id获取优惠券详细信息
	 *
	 * @param touchId
	 * @param agentId
	 * @return
	 */
	HuawuServiceCoupon getCouponByTouchId(Integer touchId, Integer agentId);

	/**
	 * 获取可用优惠券
	 *
	 * @param agentId
	 * @param userId
	 * @return
	 */
	List<HuawuServiceCoupon> getCanUseCoupon(Integer agentId, Integer userId);

	/**
	 * 更细优惠券
	 *
	 * @param huawuServiceUserCoupon
	 * @return
	 */
	int updateCoupon(HuawuServiceUserCoupon huawuServiceUserCoupon);

	/**
	 * 创建并保存优惠券规则
	 *
	 * @param rule
	 * @return
	 */
	int saveServiceCouponRule(HuawuServiceCouponRule rule);

	/**
	 * 获取系统平台优惠券规则
	 *
	 * @return
	 */
	HuawuServiceCouponRule getServiceCouponRule();
}
